OCAMLC= ocamlc
OCAMLOPT= ocamlopt
OCAMLDEP= ocamldep
	
# theprogram should be compiled to bytecode, and is composed of three

# The list of object files for theprogram
PROG1_OBJS= parser.cmo scanner.cmo interpret.cmo doodle.cmo

theprogram: $(PROG1_OBJS)
	ocamlc -o theprogram $(OCAMLFLAGS) $(PROG1_OBJS)

# Common rules
.SUFFIXES: .ml .mli .cmo .cmi .cmx

.ml.cmo:
	ocamlc $ -c $<

.mli.cmi:
	ocamlc $ -c $<

.ml.cmx:
	ocamlc $ -c $<

scanner.ml: scanner.mll
	ocamllex scanner.mll

ast.cmi: ast.mli
	ocamlc -c ast.mli

parser.ml parser.mli: parser.mly
	ocamlyacc parser.mly

parser.cmi parser.cmo: ast.cmi parser.ml
	ocamlc -c graphics.cma  parser.ml


scanner.cmi scanner.cmo: parser.cmi  scanner.ml
	ocamlc -c scanner.ml


doodle.cmi doodle.cmo: scanner.cmo parser.cmi interpret.cmo doodle.ml
	ocamlc -c doodle.ml

# Clean up
clean:
	rm -f prog1
	rm -f *.cm[iox]




